# 列表的切片操作

"""
1. 切片操作的基本使用；
      切片操作中，[]里面有两个数字，表示了一段区间,是前闭后开的区间

2. 使用切片的时候，省略边界
       a: 省略前边界，意思是从列表的 0号元素开始取，一直取到结束的后边届
       b: 省略后边界，意思是从开始位置，一直到整个列表结束
       c: 此处切片中的下标也可以写成负数
       b: 还可以把开始边界和结束边界都省略掉，得到的还是列表本身。

3.  带有步长的切片操作
       print(a[::1])，这里再多一个 : 再多加一个数字，这个数字就是步长
       1 是指，每隔一个元素，来取一下列表中的元素

4.  步长的数字还可以是负数，当步长为负数的时候，意思是从后往前来取元素

5.  当切片中的范围超出有效下标之后，不会出现异常，而是尽可能的把符合要求的元素给获取到


注：
        切片操作是一个比较高效的操作，进行切片的时候，只是取出原有列表中的一个部分，并
    不涉及到“数据的拷贝”，假设有一个很大的列表，进行切片，切片的范围也很大，即使如此
    切片操作仍然非常高效

    切片操作，还可以指定“步长”，range
"""

# 1
# a = [1, 2, 3, 4]
# print(a[1:3])  # 结果 2 3

# 2
# a = [1, 2, 3, 4]
# print(a[1:])    # 结果2 3 4
# print(a[:3])    # 结果1 2 3
# print(a[:-2])   # 结果1 2
# print(a[:])     # 结果1 2 3 4

# 3
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
# print(a[::1])   # 结果 1 2 3 4 5 6 7 8 9 0
# print(a[::2])   # 结果 1 3 5 7 9
# print(a[1:-1:2]) # 结果 2 4 6 8

# 4
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
# print(a[::-2])  #结果 0 8 6 4 2

# 5
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a[::100])  # 结果 1